{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Report-基于随机森林方法的Titanic幸存者预测模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* **姓名：刘长奇**<br>\n",
    "* **学号：2019300677**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1、任务简介"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;对于Titanic沉船事件幸存者预测问题的核心问题就是预测船上哪些人能够幸免于难，而在解决这一核心问题的过程中，还遇到了很多阻碍：<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(1)、数据集的清洗；<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(2)、缺失数据的处理；<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(3)、筛选数据，剔除无关变量；<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(4)、选用合适的预测模型；<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(5)、模型的评价等。\n",
    "\n",
    "&ensp;&ensp;&ensp;&ensp;因此，对于Titanic幸存者预测问题，需要完成的任务就是：<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(1)、处理数据；<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(2)、选择合适的预测模型;<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(3)、如何对女性幸存情况加以预测。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2、数据的清洗"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;首先统计 train.csv 文件中有无重复和缺失数据，并初步判断Titanic上旅客的存活率是多少"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total lines is  892\n",
      "0\n",
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 10 columns):\n",
      " #   Column    Non-Null Count  Dtype  \n",
      "---  ------    --------------  -----  \n",
      " 0   Survived  891 non-null    int64  \n",
      " 1   Pclass    891 non-null    int64  \n",
      " 2   Sex       891 non-null    object \n",
      " 3   Age       714 non-null    float64\n",
      " 4   SibSp     891 non-null    int64  \n",
      " 5   Parch     891 non-null    int64  \n",
      " 6   Fare      891 non-null    float64\n",
      " 7   Cabin     204 non-null    object \n",
      " 8   Embarked  889 non-null    object \n",
      " 9   Name      891 non-null    object \n",
      "dtypes: float64(2), int64(4), object(4)\n",
      "memory usage: 69.7+ KB\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "filename=r'C:\\Users\\train_01.csv'   #文件路径\n",
    "total = len(open(filename).readlines())\n",
    "print('The total lines is ',total)\n",
    "#统计行数\n",
    "\n",
    "import pandas as pd\n",
    "data=pd.read_csv('train_01.csv')\n",
    "print(data.duplicated().sum())#统计是否有重复数据;       统计结果：0（无重复）\n",
    "print(data.info())#统计缺失数据，缺失程度太多，则直接删去该列数据\n",
    "#age:177\n",
    "#cabin:687\n",
    "#embarked:2\n",
    "#利用excel中countif命令计算出存活率大概为0.25"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "&ensp;&ensp;&ensp;&ensp;统计后，发现训练数据集中无重复数据，其中**Age类数据缺失177项**，**Cabin类数据缺失687项**，**Embarked类数据缺失2项**。Titanic旅客的幸存率大概是25%。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;在进行数据处理之前，首先对一些包含信息量大的文本数据进行编码，编码情况如下：<br>\n",
    "&ensp;&ensp;&ensp;&ensp;设**male=1，female=0；**Embarked数据中，**S=1，C=2，Q=3；**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;通过查找相关网站，针对于缺失数据的补全应该采用如下方法：<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(1)、数值类型的数据缺失，应采用该类数据的平均值补充；<br>\n",
    "&ensp;&ensp;&ensp;&ensp;(2)、表示类别的数据，用众数取代。<br>\n",
    "&ensp;&ensp;&ensp;&ensp;更多详细解释见此篇博客文章\n",
    "[补全缺失数据方法](https://blog.csdn.net/zw0Pi8G5C1x/article/details/112791116?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%A6%82%E4%BD%95%E5%AF%B9%E7%BC%BA%E5%A4%B1%E6%95%B0%E6%8D%AE%E8%BF%9B%E8%A1%8C%E8%A1%A5%E5%85%85&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-112791116.pc_search_result_control_group&spm=1018.2226.3001.4187)\n",
    "\n",
    "&ensp;&ensp;&ensp;&ensp;因此，**Age的缺失值用平均值30补充**；**Embarked类数据缺失值用众数1补充**；**Cabin类数据缺失太多，不予补充，直接删除此类数据**。<br>\n",
    "![average.png](https://i.loli.net/2021/11/23/Khrcqs9yaH58d7f.png)\n",
    "&ensp;&ensp;&ensp;&ensp;Embarked用众数补充，设S=1，C=2，Q=3，经过查找，**众数为S，补充缺失项为1**；<br>\n",
    "![1class.png](https://i.loli.net/2021/11/23/I93Whd4tJXDorBN.png)\n",
    "&ensp;&ensp;&ensp;&ensp;Cabin缺失项过多，补充难度大，不予补充<br>\n",
    "&ensp;&ensp;&ensp;&ensp;同时，关于票根的相关信息没有共同点，都是独一无二的数据，因此，关于票根的数据不包含有用信息，不作为后面模型预测处理的输入量"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3、关于存活率大小的定性分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;首先分析各个变量间的相关性，对于此问题，我们重点分析**存活率和其他7个变量之间的相关性，并根据相关性系数矩阵，画出相关性热力图，其中，相关性越接近于1，变量之间的相关性越大**。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 648x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "y,p1,p2,p3,p4,p5,p6,p7= np.loadtxt(\"train_01.csv\",delimiter=',', usecols=(0,1,2,3,4,5,6,7), \n",
    "\tunpack=True)\n",
    "\n",
    "\n",
    "df=pd.DataFrame({'survive':y,'pclass':p1,'sex':p2,'age':p3,'sibsp':p4,'parch':p5,'fare':p6,'embarked':p7})\n",
    "\n",
    "correlations = df.corr(method='spearman') \n",
    "#此处可设置三种参数，'pearson', 'spearman', 'kendall'；pearson用于计算线性关系；spearman用于计算非线性关系；\n",
    "#kendall：用于反映分类变量相关性的指标，即针对无序序列的相关系数，非正太分布的数据\n",
    "correction=abs(correlations)\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "plt.subplots(figsize=(9, 9))\n",
    "sns.heatmap(correction, annot=True, vmax=1, square=True, cmap=\"Blues\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;根据相关性系数矩阵热力图可以看出，**survive存活率和pclass、sex、parch、fare、embarked这5类数据有较强的关系**；但是，通过直观分析，老年人行动越不方便，人们更希望小孩子存活等因素都可以说明**年龄应该与存活率有关**；同理，身边的姐妹或朋友的数量在一定范围内时可以相互合作，行动逃生更迅速，因此，**survive和sibsp也有相关性**。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;随后，本人**利用excel画出变量与存活率之间的柱状统计图**\n",
    "![](https://i.loli.net/2021/11/23/t45NJBEIPFfhb3T.png)\n",
    "&ensp;&ensp;&ensp;&ensp;通过存活率的大小可以直观看出从上图可以看出Embarked（登船港口）**C开头的生存率较高**；从舱室等级来看，**舱室登记越高，生存率越大**，因为根据船舱布置来说，高等舱室布置在船舶较好的位置，并且救助设施也比较完善，事故发生时，可以快速逃生。结合**家庭人口数目**与**Survived**关系图来看，当家庭规模在1-3之间时，生存率较高，1-3人一起行动时，较为灵活，同时相互帮助，而当规模超过数量时，团队活动受限，不利于逃生。从**年龄与生存率的关系**来看，在逃生过程中，婴幼儿受到了较好的照顾，而老人则由于行动不便，逃生概率小。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;基于上述对数据的整理和分析，我们知道**survive与pclass、sex、parch、fare、embarked、age、sibsp这7个变量都有相关性**,因此，后面利用机器学习的模型预测Titanic幸存者的问题就变成了**寻找survive与pclass、sex、parch、fare、embarked、age、sibsp这7个变量之间的规律，从而能对Titanic幸存者做出合理预测**。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4、利用机器学习的相关模型训练数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;本人针对所给的训练集train.csv进行拟合，分别用了**神经网络、kmeans和随机森林**三种模型训练数据，其中**神经网络模型训练的准确率为0.83；kmeans训练的模型准确率为0.64；随机森林模型的训练准确率为0.96；**，因此，**本人最终选用随机森林模型用来最终对Titanic乘客幸存与否的预测**。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1、神经网络预测"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;**首先生成训练集**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(891, 7)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "y,p1,p2,p3,p4,p5,p6,p7= np.loadtxt(\"train_01.csv\",delimiter=',', usecols=(0,1,2,3,4,5,6,7), \n",
    "\tunpack=True)\n",
    "y=y.reshape(-1,1)\n",
    "for i in range(1,8):\n",
    "    exec (\"p%s=p%s.reshape(-1,1)\"%(i,i))\n",
    "train = np.hstack((p1.reshape(-1,1),p2.reshape(-1,1)))\n",
    "for i in range(3,8):\n",
    "    exec (\"train=np.hstack((train,p%s.reshape(-1,1)))\"%i)\n",
    "print(np.shape(train))\n",
    "#生成训练集"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;**训练数据，计算模型精确度**。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\validation.py:72: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8383838383838383\n"
     ]
    }
   ],
   "source": [
    "from sklearn.neural_network import MLPClassifier\n",
    "clf_class= MLPClassifier(solver='adam', learning_rate_init=0.01,activation='logistic', alpha=1e-5,hidden_layer_sizes=(8,7), random_state=1,max_iter=2000)\n",
    "clf_class.fit(train,y)\n",
    "#sklearn神经网络学习，隐藏层两层，第一层8个节点，第二层7个节点，最多迭代2000次\n",
    "\n",
    "y_pred=[]\n",
    "j=0\n",
    "for i in range(np.shape(train)[0]):\n",
    "    y_pred.append(clf_class.predict([train[i]]))\n",
    "for i in range(np.shape(train)[0]):\n",
    "    if y_pred[i]==y[i]:\n",
    "        j=j+1\n",
    "print(j/891)\n",
    "#训练集准确率计算：0.838"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;**将错误数据利用混淆矩阵通过热力图的形式可视化出来**。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "y_pred=np.array(y_pred)\n",
    "confusion_matrix_result=confusion_matrix(y,y_pred)\n",
    "plt.figure(figsize=(10,6))\n",
    "sns.heatmap(confusion_matrix_result,annot=True,cmap='Blues')\n",
    "plt.xlabel('Predicted labels')\n",
    "plt.ylabel('True labels')\n",
    "plt.title('nn_err')\n",
    "plt.show()\n",
    "#混淆矩阵将错误数据可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.2、kmeans模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;**调用sklearn的KMeans模块训练数据，并计算模型的精确度**。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6442199775533108\n"
     ]
    }
   ],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "kmeans = KMeans(n_clusters=2).fit(train)\n",
    "y_pred=kmeans.labels_\n",
    "j=0\n",
    "for i in range(np.shape(train)[0]):\n",
    "    if y_pred[i]==y[i][0]:\n",
    "        j=j+1\n",
    "print(j/891)\n",
    "#准确率为0.644"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;**将错误数据通过混淆矩阵将其可视化**。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "y_pred=np.array(y_pred)\n",
    "confusion_matrix_result=confusion_matrix(y,y_pred)\n",
    "plt.figure(figsize=(10,6))\n",
    "sns.heatmap(confusion_matrix_result,annot=True,cmap='Blues')\n",
    "plt.xlabel('Predicted labels')\n",
    "plt.ylabel('True labels')\n",
    "plt.title('kmeans_err')\n",
    "plt.show()\n",
    "#混淆矩阵将错误数据可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.3、随机森林模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;**调用sklearn.ensemble的RandomForestClassifier模块，对数据进行训练，并计算模型精确度**。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<ipython-input-10-f39afdf0f8be>:5: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  rfc = rfc.fit(train,y)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9640852974186308\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier \n",
    "# 建立随机森林模型\n",
    "rfc = RandomForestClassifier(n_estimators=10, random_state=0)\n",
    "#第一个参数代表随机森林中树木的个数，往往是越多越好，但准确率会收敛，参数越大，计算时间越长\n",
    "rfc = rfc.fit(train,y)       \n",
    "#用训练集数据训练模型 \n",
    "\n",
    "y_pred=[]\n",
    "j=0\n",
    "for i in range(np.shape(train)[0]):\n",
    "    y_pred.append(rfc.predict([train[i]]))\n",
    "for i in range(np.shape(train)[0]):\n",
    "    if y_pred[i]==y[i]:\n",
    "        j=j+1\n",
    "print(j/891)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;**错误数据的可视化**。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "y_pred=np.array(y_pred)\n",
    "confusion_matrix_result=confusion_matrix(y,y_pred)\n",
    "plt.figure(figsize=(10,6))\n",
    "sns.heatmap(confusion_matrix_result,annot=True,cmap='Blues')\n",
    "plt.xlabel('Predicted labels')\n",
    "plt.ylabel('True labels')\n",
    "plt.title('rd_forest_err')\n",
    "plt.show()\n",
    "#混淆矩阵将错误数据可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;**综上所述，随机森林算法准确率最高，最适合用来预测Titanic幸存者问题**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5、模型的评价（AUC评价方法）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_score=rfc.predict_proba(train)\n",
    "y_test=np.zeros((891,2))\n",
    "for i in range(891):\n",
    "    if y[i,0]==0:\n",
    "        y_test[i,0]=1\n",
    "    else:\n",
    "        y_test[i,1]=1\n",
    "\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "import matplotlib.pyplot as plt\n",
    "fpr = dict()\n",
    "tpr = dict()\n",
    "roc_auc = dict()\n",
    "for i in range(2):   #两类\n",
    "    #计算每个target的fpr和tpr\n",
    "    fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])  #y_test \n",
    "    roc_auc[i] = auc(fpr[i], tpr[i])  # auc直接计算面积\n",
    "    \n",
    "# Compute micro-average ROC curve and ROC area\n",
    "fpr[\"micro\"], tpr[\"micro\"], _ = roc_curve(y_test.ravel(), y_score.ravel())\n",
    "roc_auc[\"micro\"] = auc(fpr[\"micro\"], tpr[\"micro\"])\n",
    "\n",
    "plt.figure()\n",
    "id=0  # 选择不同的id即绘制不同target分类的效果\n",
    "lw = 2\n",
    "plt.plot(fpr[id], tpr[id], color='darkorange',\n",
    "         lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[0])#S0=0.97\n",
    "plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n",
    "plt.xlim([0.0, 1.0])\n",
    "plt.ylim([0.0, 1.05])\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('Receiver operating characteristic example')\n",
    "plt.legend(loc=\"lower right\")\n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;**AUC值为0.99，几乎为1，则选用随机森林模型预测Titanic幸存者十分恰当**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6、数据的写入"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;利用随机森林模型，**将预测好的标签写入test_1.csv文件，实现对未知对象的预测**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(418, 7)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "p1,p2,p3,p4,p5,p6,p7= np.loadtxt(\"test_1.csv\",delimiter=',', usecols=(0,1,2,3,4,5,6), \n",
    "\tunpack=True)\n",
    "\n",
    "for i in range(1,8):\n",
    "    exec (\"p%s=p%s.reshape(-1,1)\"%(i,i))\n",
    "test = np.hstack((p1.reshape(-1,1),p2.reshape(-1,1)))\n",
    "for i in range(3,8):\n",
    "    exec (\"test=np.hstack((test,p%s.reshape(-1,1)))\"%i)\n",
    "print(np.shape(test))\n",
    "#生成测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred=[]\n",
    "j=0\n",
    "for i in range(np.shape(test)[0]):\n",
    "    y_pred.append(rfc.predict([test[i]]))\n",
    "\n",
    "import csv\n",
    "f = open('test.csv','w',encoding='utf-8',newline='' \"\")\n",
    "csv_writer = csv.writer(f)\n",
    "csv_writer.writerow([\"passenger\",\"Survive\"])\n",
    "for i in range(418):\n",
    "    n=891+i+1\n",
    "    csv_writer.writerow([n,y_pred[i]])\n",
    "f.close()\n",
    "#数据写入"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    Pclass  Sex   Age  SibSp  Parch     Fare  Embarked  \\\n",
      "0        3    1  34.5      0      0   7.8292         3   \n",
      "1        3    0  47.0      1      0   7.0000         1   \n",
      "2        2    1  62.0      0      0   9.6875         3   \n",
      "3        3    1  27.0      0      0   8.6625         1   \n",
      "4        3    0  22.0      1      1  12.2875         1   \n",
      "..     ...  ...   ...    ...    ...      ...       ...   \n",
      "95       3    1  25.0      0      0   7.7958         1   \n",
      "96       1    0  76.0      1      0  78.8500         1   \n",
      "97       3    1  29.0      0      0   7.9250         1   \n",
      "98       3    0  20.0      0      0   7.8542         1   \n",
      "99       3    1  33.0      0      0   8.0500         1   \n",
      "\n",
      "                                                 Name  Unnamed: 8  Unnamed: 9  \\\n",
      "0                                    Kelly, Mr. James         NaN         NaN   \n",
      "1                    Wilkes, Mrs. James (Ellen Needs)         NaN         NaN   \n",
      "2                           Myles, Mr. Thomas Francis         NaN         NaN   \n",
      "3                                    Wirz, Mr. Albert         NaN         NaN   \n",
      "4        Hirvonen, Mrs. Alexander (Helga E Lindqvist)         NaN         NaN   \n",
      "..                                                ...         ...         ...   \n",
      "95                         Tenglin, Mr. Gunnar Isidor         NaN         NaN   \n",
      "96  Cavendish, Mrs. Tyrell William (Julia Florence...         NaN         NaN   \n",
      "97                          Makinen, Mr. Kalle Edvard         NaN         NaN   \n",
      "98                       Braf, Miss. Elin Ester Maria         NaN         NaN   \n",
      "99                       Nancarrow, Mr. William Henry         NaN         NaN   \n",
      "\n",
      "    Unnamed: 10  Unnamed: 11  Unnamed: 12  passenger Survive  \n",
      "0           NaN          NaN          NaN        892    [0.]  \n",
      "1           NaN          NaN          NaN        893    [0.]  \n",
      "2           NaN          NaN          NaN        894    [0.]  \n",
      "3           NaN          NaN          NaN        895    [1.]  \n",
      "4           NaN          NaN          NaN        896    [0.]  \n",
      "..          ...          ...          ...        ...     ...  \n",
      "95          NaN          NaN          NaN        987    [0.]  \n",
      "96          NaN          NaN          NaN        988    [1.]  \n",
      "97          NaN          NaN          NaN        989    [0.]  \n",
      "98          NaN          NaN          NaN        990    [0.]  \n",
      "99          NaN          NaN          NaN        991    [0.]  \n",
      "\n",
      "[100 rows x 15 columns]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "sheet = pd.read_csv('test_1.csv',encoding='utf-8')\n",
    "print(sheet.head(100))\n",
    "#打印表格前100行作为举例"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7、对女性乘客的预测"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;对于该问题，我们需要重新整合数据，针对原测试集数据，**将女性乘客筛选出，单独成为训练数据集**，再次用机器学习的相关模型拟合训练集，从而实现对女性乘客存活率的预测；**此时船上所有的男性在灾难中全部遇难**。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**新数据集的展示**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    Survive  Pclass  Sex   Age  SibSp  Parch      Fare  Embarked  \\\n",
      "0         1       1    0  38.0      1      0   71.2833         2   \n",
      "1         1       3    0  26.0      0      0    7.9250         1   \n",
      "2         1       1    0  35.0      1      0   53.1000         1   \n",
      "3         1       3    0  27.0      0      2   11.1333         1   \n",
      "4         1       2    0  14.0      1      0   30.0708         2   \n",
      "..      ...     ...  ...   ...    ...    ...       ...       ...   \n",
      "95        1       1    0  35.0      0      0  135.6333         1   \n",
      "96        1       2    0  41.0      0      1   19.5000         1   \n",
      "97        1       3    0  30.0      0      0    7.7500         3   \n",
      "98        1       1    0  63.0      1      0   77.9583         1   \n",
      "99        0       3    0  45.0      0      0    7.7500         1   \n",
      "\n",
      "                                                 Name  \n",
      "0   Cumings, Mrs. John Bradley (Florence Briggs Th...  \n",
      "1                              Heikkinen, Miss. Laina  \n",
      "2        Futrelle, Mrs. Jacques Heath (Lily May Peel)  \n",
      "3   Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)  \n",
      "4                 Nasser, Mrs. Nicholas (Adele Achem)  \n",
      "..                                                ...  \n",
      "95                             Bissette, Miss. Amelia  \n",
      "96          Mellinger, Mrs. (Elizabeth Anne Maidment)  \n",
      "97                         Healy, Miss. Hanora \"Nora\"  \n",
      "98                  Andrews, Miss. Kornelia Theodosia  \n",
      "99                  Lindblom, Miss. Augusta Charlotta  \n",
      "\n",
      "[100 rows x 9 columns]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "sheet = pd.read_csv('train_female.csv',encoding='utf-8')\n",
    "print(sheet.head(100))\n",
    "#打印表格前100行作为举例"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**kmeans模型预测分类**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(314, 7)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "y,p1,p2,p3,p4,p5,p6,p7= np.loadtxt(\"train_female_t.csv\",delimiter=',', usecols=(0,1,2,3,4,5,6,7), \n",
    "\tunpack=True)\n",
    "y=y.reshape(-1,1)\n",
    "\n",
    "for i in range(1,8):\n",
    "    exec (\"p%s=p%s.reshape(-1,1)\"%(i,i))\n",
    "train = np.hstack((p1.reshape(-1,1),p2.reshape(-1,1)))\n",
    "for i in range(3,8):\n",
    "    exec (\"train=np.hstack((train,p%s.reshape(-1,1)))\"%i)\n",
    "print(np.shape(train))\n",
    "#生成训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6464968152866242\n"
     ]
    }
   ],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "kmeans = KMeans(n_clusters=2).fit(train)\n",
    "y_pred=kmeans.labels_\n",
    "j=0\n",
    "for i in range(np.shape(train)[0]):\n",
    "    if y_pred[i]==y[i][0]:\n",
    "        j=j+1\n",
    "print(j/314)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**神经网络模型预测**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\validation.py:72: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.856687898089172\n"
     ]
    }
   ],
   "source": [
    "from sklearn.neural_network import MLPClassifier\n",
    "clf_class= MLPClassifier(solver='adam', learning_rate_init=0.01,activation='logistic', alpha=1e-5,hidden_layer_sizes=(8,7), random_state=1,max_iter=2000)\n",
    "clf_class.fit(train,y)\n",
    "#sklearn神经网络学习，隐藏层两层，第一层8个节点，第二层7个节点，最多迭代2000次\n",
    "\n",
    "y_pred=[]\n",
    "j=0\n",
    "for i in range(np.shape(train)[0]):\n",
    "    y_pred.append(clf_class.predict([train[i]]))\n",
    "for i in range(np.shape(train)[0]):\n",
    "    if y_pred[i]==y[i]:\n",
    "        j=j+1\n",
    "print(j/314)\n",
    "#准确率为0.857"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**随机森林模型预测**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<ipython-input-6-81324d2fafc5>:5: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  rfc = rfc.fit(train,y)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9745222929936306\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier \n",
    "# 建立随机森林模型\n",
    "rfc = RandomForestClassifier(n_estimators=10, random_state=0)\n",
    "#第一个参数代表随机森林中树木的个数，往往是越多越好，但准确率会收敛，参数越大，计算时间越长\n",
    "rfc = rfc.fit(train,y)       \n",
    "#用训练集数据训练模型 \n",
    "\n",
    "y_pred=[]\n",
    "j=0\n",
    "for i in range(np.shape(train)[0]):\n",
    "    y_pred.append(rfc.predict([train[i]]))\n",
    "for i in range(np.shape(train)[0]):\n",
    "    if y_pred[i]==y[i]:\n",
    "        j=j+1\n",
    "print(j/314)\n",
    "#准确率为0.975"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;从分类的精确度可以看出，随机森林模型的准确度最高，因此，**对于女性乘客的存活率预测问题，随机森林模型仍有较好的实用性**。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**将随机森林模型对女性乘客分类错误的数据可视化**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "y_pred=np.array(y_pred)\n",
    "confusion_matrix_result=confusion_matrix(y,y_pred)\n",
    "plt.figure(figsize=(10,6))\n",
    "sns.heatmap(confusion_matrix_result,annot=True,cmap='Blues')\n",
    "plt.xlabel('Predicted labels')\n",
    "plt.ylabel('True labels')\n",
    "plt.title('rd_forest_err')\n",
    "plt.show()\n",
    "#混淆矩阵将错误数据可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**模型评价（AUC评价法）**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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VhCr4FDVgHq1rIbqjqXqC+npGZqRkZE5PGrUjzpy5AJNSUnzyfJM0bZmzRp/h6ClS5fOfH/HHXfo888/r6qqR48e1Tp16uicOXNUVfXIkSParVs3HTdunKqqrlq1SuvUqaNr165VVdXU1FQdP358vsaWmpp63vO48cYbNSEhoUCXeTbGjx+v/fv3V1XVDz/8UG+++eYzyuzZs0erV6+uu3btUlXn/zR37lxVddZv6tSpqqr67bff6t/+9rfM6fr27as//vhjtsvNbt8Dluo5Hnf9fuA/25evEsXy5du1det/6bvver/TGZOb076sr+CbVx48E8XEiRN1wIABqqo6ZcoU7dOnz2llExMTtVq1aqqq2qdPH33rrbfynP+hQ4e0b9++2qRJE7344ov1448/PmO5H330kd55552qqnrnnXfqkCFDNC4uTh988EGtWbOm7t+/P7Ns3bp1dceOHbpr1y79v//7P42NjdXY2NhsD4gHDx7UBg0aZA4vWrRI27Ztq82bN9e2bdvqunXrVFX13//+t954443as2dP7dChgx4+fFj79eunsbGx2rx5c50xY4aqqm7atEmvuOIKbdGihbZo0UIXLlyY5/rn5aqrrtKffvpJVZ0kFRUVddqPUVXVxYsXa6dOnTKH33333cz/U6NGjXTr1q2qqpqRkaERERGZ5WbMmJFZLqv8ThTF/hzFoUMpPP30D4wdu4iMDCUlJZ2//a2pnYQ0RUp6ejrffvstd999N+A0O7Vs2fK0MnXr1uXw4cMcPHiQ1atXM3To0Dzn+9xzzxEZGcmqVasA2L9/f57TbNiwgblz5xIcHExGRgaffvop/fr1Y9GiRdSqVYvKlStz2223MWTIEK644gq2bNlC165dWbt27WnzWbp0KU2aNMkcjo6OZv78+YSEhDB37lyGDx/O9OnTAfj5559ZuXIlFSpUYPjw4XTs2JG3336bAwcO0KpVKzp37swFF1zAN998Q1hYGL///ju33norS5cuPSP+du3acejQoTM+f+WVV+jcufNpn23bto3q1asDEBISQmRkJHv37qVixYqZZerVq8e6devYvHkz1apVY8aMGZw4cQKAZs2aMX36dAYPHsynn37KoUOH2Lt3L1FRUcTGxvLEE0/kub3zQ7FNFKrKjBnreOCBr0hKOkhQkDB4cGuefbaDJQmT/4b6p9+vY8eO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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_score=rfc.predict_proba(train)\n",
    "y_test=np.zeros((314,2))\n",
    "for i in range(314):\n",
    "    if y[i,0]==0:\n",
    "        y_test[i,0]=1\n",
    "    else:\n",
    "        y_test[i,1]=1\n",
    "\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "import matplotlib.pyplot as plt\n",
    "fpr = dict()\n",
    "tpr = dict()\n",
    "roc_auc = dict()\n",
    "for i in range(2):   #两类\n",
    "    #计算每个target的fpr和tpr\n",
    "    fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])  #y_test \n",
    "    roc_auc[i] = auc(fpr[i], tpr[i])  # auc直接计算面积\n",
    "    \n",
    "# Compute micro-average ROC curve and ROC area\n",
    "fpr[\"micro\"], tpr[\"micro\"], _ = roc_curve(y_test.ravel(), y_score.ravel())\n",
    "roc_auc[\"micro\"] = auc(fpr[\"micro\"], tpr[\"micro\"])\n",
    "\n",
    "plt.figure()\n",
    "id=0  # 选择不同的id即绘制不同target分类的效果\n",
    "lw = 2\n",
    "plt.plot(fpr[id], tpr[id], color='darkorange',\n",
    "         lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[0])#S0=0.97\n",
    "plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n",
    "plt.xlim([0.0, 1.0])\n",
    "plt.ylim([0.0, 1.05])\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('Receiver operating characteristic example')\n",
    "plt.legend(loc=\"lower right\")\n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;综上所述，无论是对整条船的乘客的存活情况预测还是针对女性乘客存活情况的预测，**随机森林模型都有很好的预见性，对于预测Titanic的幸存者有最佳效果**。**针对gender.csv文件的提交情况，训练样本应是所有的女性乘客，由于有且仅有女性乘客可以存活，此时船上所有的男性乘客均遇难**。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 8、总结"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;针对Titanic幸存者预测问题，本人**综合利用Excel和程序设计的手段对数据进行清洗和可视化处理**，达到了对数据信息的初步挖掘，找到了后续工作的方向，为后面机器学习训练数据奠定了基础；并在此基础上，利用机器学习的模型，**通过对比KMeans、神经网络和随机森林三种模型的优劣**来确定预测问题的模型，从而让问题得到合理的解决。<br>\n",
    "&ensp;&ensp;&ensp;&ensp;针对女性乘客存活率预测问题，属于是Titanic幸存者预测的深化，**将数据缩小范围至女性乘客，重新整合数据，训练模型**，实现对女性乘客存活率的预测。\n",
    "&ensp;&ensp;&ensp;&ensp;解决Titanic幸存者预测的思路流程如下：\n",
    "![stage.png](https://i.loli.net/2021/11/24/5JendKqDEuVQgUy.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 9、个人感想"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&ensp;&ensp;&ensp;&ensp;完成本篇报告任务后，本人对利用程序处理生活问题的认识有了新的理解，过去认为利用程序设计手段解决生活问题难点与核心在于编写程序，当我真正编写程序完成这篇贴切生活的报告后，我发现：利用程序处理生活问题时，**最重要的是对数据的处理**。对于不同的数据处理手段，最终程序处理的结果也不同，而**处理数据的过程结合相应办公软件和编译平台均可实现对数据的预处理**，**从而达到对数据包含的信息挖掘的目的**。<br>\n",
    "&ensp;&ensp;&ensp;&ensp;Titanic幸存者预测问题源于生活，完成本篇报告后，也让自己有了学以致用的快感。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
